<!doctype html>
<html lang="en">
<head><meta name="generator" content="Hexo 3.9.0">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>言成言成啊</title>
    <link rel="shortcut icon" href="/images/favicon.ico">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/meethigher/cdn@9.0/css/meethigher-font.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/meethigher/cdn@9.0/css/animate.css">
    <link rel="stylesheet" href="/css/index.css">
</head>
<body>
<header class="header">
    <div class="header-menu"><span class="fa fa-bars"></span></div>
    <div class="header-search"><span class="fa fa-search"></span></div>
    <div class="header-title"><a href="/">言成言成啊 | <span class="header-subtitle">Kit Chen&#39;s Blog</span></a></div>
    <ul class="header-navbar clearFix">
        
            <li><a href="/">主页</a></li>
        
            <li><a href="/tags">标签</a></li>
        
            <li><a href="/archives">归档</a></li>
        
            <li><a href="/search">导航</a></li>
        
    </ul>
</header>
<main class="main">
    <div class="main-content meethigher-scroll">
    <article class="post">
        <div class="post-title">
            <h2 class="title">关于继承、方法重写、super和this</h2>
        </div>
        <div class="post-media2">
            <span class="post-time">2019-09-17</span>
            
                <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/java/">java</a></li></ul>
            
        </div>
        <div class="post-content blog-markdown">
            <h2 id="继承"><a href="#继承" class="headerlink" title="继承"></a>继承</h2><p>在继承的关系中，子类就是父类。也就是说，子类可以被当做父类来对待。</p>
<p>定义父类的格式：</p>
<figure class="highlight actionscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> 父类名称 </span>&#123;</span><br><span class="line"></span><br><span class="line"><span class="comment">//...</span></span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>定义子类的格式：</p>
<figure class="highlight scala"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">public <span class="class"><span class="keyword">class</span> <span class="title">子类名称</span> <span class="keyword">extends</span> <span class="title">父类名称</span> </span>&#123;</span><br><span class="line"></span><br><span class="line"><span class="comment">//...</span></span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>在父子类的继承中，如果成员变量重名，则创建子类对象时，访问有两种方式：</p>
<ol>
<li>直接通过子类对象访问成员变量：<br>等号左边是谁，就优先用谁，没有则向上找；</li>
<li>间接通过成员方法访问成员变量：<br>该方法属于谁，就优先用谁，没有则向上找。</li>
</ol>
<figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title">Fu</span> &#123;</span><br><span class="line">	<span class="keyword">int</span> num=<span class="number">100</span>;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">methodFu</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(num);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">class</span> <span class="title">Zi</span> <span class="title">extends</span> <span class="title">Fu</span> &#123;</span><br><span class="line">	<span class="keyword">int</span> num=<span class="number">200</span>;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">methodZi</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(num);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title">Demo02ExtendsField</span> &#123;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span>(<span class="params">String[] args</span>)</span> &#123;</span><br><span class="line">		Fu fu=<span class="keyword">new</span> Fu();</span><br><span class="line">		Zi zi=<span class="keyword">new</span> Zi();</span><br><span class="line">		</span><br><span class="line">		System.<span class="keyword">out</span>.println(zi.num);<span class="comment">//200</span></span><br><span class="line">		</span><br><span class="line">		zi.methodZi();<span class="comment">//200;</span></span><br><span class="line">		zi.methodFu();<span class="comment">//100;</span></span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="继承中的方法重写"><a href="#继承中的方法重写" class="headerlink" title="继承中的方法重写"></a>继承中的方法重写</h2><p>局部变量：直接输出</p>
<p>本类的成员变量：this</p>
<p>父类的成员变量：super</p>
<hr>
<p><strong>方法重写</strong><br>概念：在继承关系当中，方法的名称一样，参数列表也一样。</p>
<p>重写（Override）:方法的名称一样，参数列表也一样。覆盖。[发生在继承关系当中]</p>
<p>重载（Overload）:方法的名称一样，参数列表不一样。</p>
<p><strong>方法覆盖的特点</strong><br>创建的是子类对象，则优先使用子类方法</p>
<figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title">Fu1</span> &#123;</span><br><span class="line">	<span class="keyword">int</span> num=<span class="number">10</span>;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">methodC</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"父类重名方法执行"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">class</span> <span class="title">Zi1</span> <span class="title">extends</span> <span class="title">Fu1</span> &#123;</span><br><span class="line">	<span class="keyword">int</span> num=<span class="number">20</span>;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">method</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		<span class="keyword">int</span> num=<span class="number">30</span>;</span><br><span class="line">		System.<span class="keyword">out</span>.println(num);<span class="comment">//30 局部变量</span></span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="keyword">this</span>.num);<span class="comment">//20 该类中的成员变量</span></span><br><span class="line">		System.<span class="keyword">out</span>.println(super.num);<span class="comment">//10 父类中的成员变量</span></span><br><span class="line">	&#125;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">methodC</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"子类重名方法执行"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title">Demo03ExtendsField</span> &#123;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span>(<span class="params">String[] args</span>)</span> &#123;</span><br><span class="line">		Zi1 zi=<span class="keyword">new</span> Zi1();</span><br><span class="line">		zi.method();</span><br><span class="line">		zi.methodC();</span><br><span class="line">	&#125;</span><br><span class="line">	</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p><strong>方法重写的注意事项</strong></p>
<ol>
<li><p>必须保证父子类之间的方法的名称相同，参数列表也相同<br>@Override:写在方法前面，用来检测是不是有效地正确覆盖重写；这个注解只要不写，只要满足要求，也是正确的方法覆盖重写</p>
</li>
<li><p>子类方法的返回值必须小于等于父类方法的返回值范围<br>前提：Object类是所有类的公共最高父类（祖宗类），java.lang.String就是Object的子类；Object是最大的范围，String是他的子类，范围要小。</p>
<figure class="highlight scala"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Fulei</span> </span>&#123;</span><br><span class="line">	public <span class="type">Object</span> method() &#123;</span><br><span class="line">		<span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Zilei</span> <span class="keyword">extends</span> <span class="title">Fulei</span> </span>&#123;</span><br><span class="line">	<span class="meta">@Override</span></span><br><span class="line">	public <span class="type">String</span> method() &#123;</span><br><span class="line">		<span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>子类方法的权限修饰符必须大于等于父类方法的权限修饰符<br>提示：public&gt;protected&gt;(default)&gt;private<br>备注：default不是关键字，是不写的情况下</p>
<figure class="highlight scala"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Fulei</span> </span>&#123;</span><br><span class="line">	void method() &#123;<span class="comment">//这个默认是default</span></span><br><span class="line">		</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Zilei</span> <span class="keyword">extends</span> <span class="title">Fulei</span> </span>&#123;</span><br><span class="line">	<span class="meta">@Override</span></span><br><span class="line">	public void method() &#123;<span class="comment">//public</span></span><br><span class="line">		</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>



</li>
</ol>
<p><strong>方法重写实际案例</strong></p>
<figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title">Phone</span> &#123;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">call</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"打电话"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">send</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"发短信"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">show</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"显示号码"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">class</span> <span class="title">NewPhone</span> <span class="title">extends</span> <span class="title">Phone</span> &#123;</span><br><span class="line">	@Override</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">show</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		<span class="comment">// TODO Auto-generated method stub</span></span><br><span class="line">		super.show();</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"显示姓名"</span>);</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"显示头像"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title">Demo05Phone</span> &#123;</span><br><span class="line"></span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span>(<span class="params">String[] args</span>)</span> &#123;</span><br><span class="line">		<span class="comment">// TODO Auto-generated method stub</span></span><br><span class="line">		Phone p=<span class="keyword">new</span> Phone();</span><br><span class="line">		p.call();</span><br><span class="line">		p.send();</span><br><span class="line">		p.show();</span><br><span class="line">		</span><br><span class="line">		NewPhone np=<span class="keyword">new</span> NewPhone();</span><br><span class="line">		np.call();</span><br><span class="line">		np.send();</span><br><span class="line">		np.show();</span><br><span class="line">	&#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="super关键字"><a href="#super关键字" class="headerlink" title="super关键字"></a>super关键字</h2><p>继承关系中，父子类构造方法的访问特点：</p>
<ul>
<li><p>1.子类<strong>构造方法</strong>当中有一个默认隐藏的super()调用。所以一定是先调用父类构造方法，后调用子类构造方法</p>
</li>
<li><p>2.子类构造可以通过super调用父类重载构造</p>
</li>
<li><p>3.super的父类构造调用，必须是子类构造方法的第一个语句（第一个super的语句）;</p>
</li>
<li><p>总结：</p>
<p>子类必须调用父类的构造方法，不写则赠送super();写了，则用指定的super(),super只能是第一个。</p>
</li>
</ul>
<p>总结：</p>
<ul>
<li>super关键字的用法有三种：</li>
<li>1.在子类的<strong>成员方法</strong>中，访问父类的<strong>成员变量</strong></li>
<li>2.在子类的<strong>成员方法</strong>中，访问父类的<strong>成员方法</strong></li>
<li>3.在子类的<strong>构造方法</strong>中，访问父类的<strong>构造方法</strong></li>
</ul>
<figure class="highlight cs"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title">F</span> &#123;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="title">F</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"父类无参构造方法"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="title">F</span>(<span class="params"><span class="keyword">int</span> num</span>)</span> &#123;</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"父类有参构造方法"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">class</span> <span class="title">Z</span> <span class="title">extends</span> <span class="title">F</span> &#123;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="title">Z</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		<span class="comment">//super();默认有个隐藏的super();</span></span><br><span class="line">		super(<span class="number">20</span>);</span><br><span class="line">		System.<span class="keyword">out</span>.println(<span class="string">"子类构造方法"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">method</span>(<span class="params"></span>)</span> &#123;</span><br><span class="line">		<span class="comment">//super();//此处会报错。只有子类构造方法，才能调用父类构造方法。</span></span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title">Demo06Constructor</span> &#123;</span><br><span class="line"></span><br><span class="line">	<span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span>(<span class="params">String[] args</span>)</span> &#123;</span><br><span class="line">		<span class="comment">// TODO Auto-generated method stub</span></span><br><span class="line">		Z z=<span class="keyword">new</span> Z();</span><br><span class="line">	&#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="this关键字"><a href="#this关键字" class="headerlink" title="this关键字"></a>this关键字</h2><p>super关键字用来访问父类内容，而this关键字用来访问本类内容。</p>
<p>三种用法：</p>
<ol>
<li>在本类的<strong>成员方法</strong>中，访问本类的<strong>成员变量</strong></li>
<li>在本类的<strong>成员方法</strong>中，访问本类的另一个<strong>成员方法</strong></li>
<li>在本类的<strong>构造方法</strong>中，访问本类的另一个<strong>构造方法</strong><ol>
<li>this调用跟super调用一样，也必须是构造方法的第一个语句，也必须是唯一一个</li>
<li>super跟this都必须是第一个，并且<strong>两者不能同时使用</strong></li>
</ol>
</li>
</ol>
<figure class="highlight dart"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> 父 </span>&#123;</span><br><span class="line">	<span class="built_in">int</span> <span class="built_in">num</span>=<span class="number">30</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="class"><span class="keyword">class</span> 子 <span class="keyword">extends</span> 父 </span>&#123;</span><br><span class="line">	<span class="built_in">int</span> <span class="built_in">num</span>=<span class="number">20</span>;</span><br><span class="line">	public <span class="keyword">void</span> method()&#123;</span><br><span class="line">		<span class="built_in">int</span> <span class="built_in">num</span>=<span class="number">10</span>;</span><br><span class="line">		System.out.println(<span class="built_in">num</span>);<span class="comment">//10</span></span><br><span class="line">		System.out.println(<span class="keyword">this</span>.<span class="built_in">num</span>);<span class="comment">//20</span></span><br><span class="line">		System.out.println(<span class="keyword">super</span>.<span class="built_in">num</span>);<span class="comment">//30</span></span><br><span class="line">	&#125;</span><br><span class="line">	</span><br><span class="line">	public <span class="keyword">void</span> methodA() &#123;</span><br><span class="line">		System.out.println(<span class="string">"A"</span>);</span><br><span class="line">	&#125;</span><br><span class="line">	public <span class="keyword">void</span> methodB() &#123;</span><br><span class="line">		<span class="keyword">this</span>.methodA();<span class="comment">//A</span></span><br><span class="line">		System.out.println(<span class="string">"B"</span>);<span class="comment">//B</span></span><br><span class="line">	&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
        </div>
        
            <div class="busuanzi">
                <span id="busuanzi_container_page_pv">阅读量<span id="busuanzi_value_page_pv"></span>次</span>
                <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
            </div>
        
    </article>
</div>
    <pointer href="javascript:void(0);" class="arrow fa fa-arrow-up"></pointer>
<pointer href="javascript:void(0);" class="arrow fa fa-arrow-down"></pointer>

</main>
<aside class="aside">
    <div class="aside-content">
        <div class="aside-avatar"><img src="/images/kitchen.jpg" alt="言成"></div>
        <div class="aside-author">言成</div>
        <div class="aside-description">爱学习，爱运动，爱看妹子</div>
        <ul class="aside-contact clearFix">
            <li><span class="fa fa-github"></span><a href="https://github.com/meethigher">Github</a></li>
            <li><span class="fa fa-envelope"></span><a href="javascript:void(0);">meethigher@qq.com</a></li>
            <li><span class="fa fa-weixin"></span><a href="javascript:void(0);"><img src="/images/weixin.png" alt="扫描微信二维码，加我哦！"></a></li>
        </ul>
    </div>
</aside>
<div class="toolbar"><span class="fa fa-th"></span></div>
<div id="particles-js"></div>
<script src="https://cdn.jsdelivr.net/gh/meethigher/cdn@9.0/js/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/meethigher/cdn@9.0/js/particles.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/meethigher/cdn@9.0/js/app.js"></script>
<script src="/js/meethigher.js"></script>
<script src="/js/toolbar.js"></script>
</body>
</html>